home *** CD-ROM | disk | FTP | other *** search
/ Publication 19 / Publication_19_19xx_Civitas_de_Side_B.d64 / flop v1.1-ascii < prev    next >
Text File  |  2023-02-26  |  17KB  |  800 lines

  1. +cbmstart =$c000
  2. +readpuf  =$0400
  3. +dirpuf   =$0500
  4. {CBM-A}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-S}
  5. {$7d}cbmstart:startadresse im 64er        {$7d}
  6. {$7d}                                     {$7d}
  7. {$7d}readpuf :speicher fuer empfangenen   {$7d}
  8. {$7d}         sektor                      {$7d}
  9. {$7d}dirpuf  :speicher fuer directory     {$7d}
  10. {CBM-Z}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-X}
  11.          .goto weiter
  12. _gby
  13.           bvc *        ;ein byte vom
  14.           clv          ;rw-kopf holen
  15.           lda $1c01
  16.          .endmacro
  17. _tra
  18.           bit $1800    ;auf atn warten
  19.           bpl *-3      ;$8f ist ein
  20.          .b $8f,$00,$18;illegaler, der
  21.                        ;(akku and x)
  22.                        ;ablegt
  23.           bit $1800    ;auf atn clear
  24.           bmi *-3      ;warten
  25.          .endmacro
  26. _weiter
  27. {CBM-A}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-S}
  28. {$7d}computer-teil                        {$7d}
  29. {CBM-Z}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-X}
  30.          .setpc cbmstart
  31.  
  32. +listen   =$ffb1
  33. +seclst   =$ff93
  34. +iecout   =$ffa8
  35. +unlist   =$ffae
  36. +flopstart=$0500
  37.  
  38.          .begin
  39.           jmp install
  40.           jmp load
  41.           jmp motoroff
  42.           jmp reset
  43.           jmp settrs
  44.           jmp read
  45.           jmp trackpos
  46.           jmp test
  47.           jmp cachedir
  48.           jmp finddir
  49.  
  50. -error    sec
  51.           rts
  52. ;alle 64 byte findet sich was von der  
  53. ;rdtab. etwas unuebersichtlich..       
  54. +rdtab   .b 255,255,255,255
  55.  
  56. ;{$60}{$60}{$60}{$60} sendet xreg zur floppy {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  57. ;{$60}{$60}{$60}{$60} erg: c=0,z=0,a=0,y=8,x=unv.      
  58. +send
  59.           bit $dd00
  60.           bmi send  ; oder bmi error
  61.           bvs send  ;      bvs error
  62.  
  63.           ldy#8
  64.           sty $dd00
  65.           lda sendtab,x
  66.           and#240
  67.           sta $dd00
  68.           lsr
  69.           lsr
  70.           nop
  71.           nop
  72.           and#240
  73.           nop
  74.           sty $dd00
  75.           nop
  76.           nop
  77.           sta $dd00
  78.           lda sendtab,x
  79.           asl
  80.           asl
  81.           nop
  82.           sty $dd00
  83.           nop
  84.           nop
  85.           sta $dd00
  86.           clc
  87.           nop
  88.           lda#0
  89.           nop
  90.           nop
  91.           sta $dd00
  92.           rts
  93.  
  94.          .fill (rdtab+64-*,0)
  95. -rdtab2  .b 191,191,191,191
  96.  
  97. ;{$60}{$60}{$60}{$60} hilft beim testen des interleaves
  98. ;    fuer bereich xreg und ilv yreg    
  99. +test     lda trtab,x
  100.           sta ts2+1
  101.           lda mxtab,x
  102.           sta mx
  103.           sty ilv+1
  104.           lda#0
  105.           sta sect
  106. -ts2      ldx#123
  107.           ldy sect
  108.           jsr settrs
  109. -ilv      lda#4     ;interleave
  110.           adc sect
  111. -ts3      cmp mx    ;anzahl sektoren
  112.           bcc ts4
  113.           sbc mx
  114. -ts4      sta sect
  115.           jsr read
  116.           inc 53280
  117.           inc 2023
  118.           bne ts2
  119.           rts
  120. -trtab   .b 31,25,18,17
  121.          .fill (rdtab+128-*,0)
  122. -rdtab3  .b 127,127,127,127
  123. -mxtab   .b 17,18,19,21
  124. -sect    .b 0
  125. -mx      .b 0
  126.  
  127. {$60}{$60}{$60}{$60}{$60} lader ausschalten {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  128. +reset    ldx#0
  129.           jmp send
  130. +getbyte
  131.           inx
  132.           lda readpuf,x
  133.           cpx blockmax
  134.           beq gb2
  135.           rts
  136. -gb2      lda fertig
  137.           beq gb2-1
  138.           sty indexmerk
  139.           jsr read
  140.           ldy readpuf+1
  141.           ldx readpuf
  142.           bne mehrblock
  143.           iny
  144.           sty blockmax
  145.           stx fertig
  146.           ldy indexmerk
  147.           inx
  148.           bne getbyte
  149.  
  150.          .fill (rdtab+192-*,0)
  151. -rdtab4  .b 63,63,63,63
  152.  
  153. -mehrblock
  154.           jsr settrs
  155.           ldy indexmerk
  156.           ldx#1
  157.           bne getbyte
  158.  
  159. -fertig    .b 0
  160. -blockmax  .b 0
  161. -indexmerk .b 0
  162. {$60}{$60}{$60}{$60}{$60} laedt eine datei ab track (xreg) 
  163.       und sektor (yreg)                
  164. +load
  165.           jsr settrs
  166.           ldx#1
  167.           stx fertig
  168.           dex
  169.           stx blockmax
  170.           dex
  171.           jsr getbyte
  172.           sta 45
  173.           jsr getbyte
  174.           sta 46
  175.           ldy#0
  176. -load1    jsr getbyte
  177.           beq load2
  178.           sta (45),y
  179.           iny
  180.           bne load1
  181.           inc 46
  182.           bne load1
  183. -load2
  184.           iny
  185.           bne ld3
  186.           inc 46
  187. -ld3      sty 45
  188.           rts
  189. {$60}{$60}{$60}{$60}{$60} motor ausschalten {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  190. +motoroff ldx#62
  191.           jmp send
  192.  
  193. {$60}{$60}{$60}{$60}{$60} motor einschalten, positionieren 
  194.       xreg=tracknummer                 
  195. +trackpos stx lade2+1
  196.           lda#63
  197.           jmp lade3
  198. ;{$60}{$60}{$60}{$60} uebermittelt track (xreg) und    
  199. ;     sektor (yreg)                    
  200. +settrs   sty lade2+1
  201. -lade3    jsr send
  202. -lade2    ldx#0
  203.           jsr send
  204.           rts
  205.  
  206. +sendtab
  207.          .b %00000000,%00001000
  208.          .b %10000000,%10001000
  209.          .b %00000100,%00001100
  210.          .b %10000100,%10001100
  211.          .b %00100000,%00101000
  212.          .b %10100000,%10101000
  213.          .b %00100100,%00101100
  214.          .b %10100100,%10101100
  215.  
  216.          .b %01000000,%01001000
  217.          .b %11000000,%11001000
  218.          .b %01000100,%01001100
  219.          .b %11000100,%11001100
  220.          .b %01100000,%01101000
  221.          .b %11100000,%11101000
  222.          .b %01100100,%01101100
  223.          .b %11100100,%11101100
  224.  
  225.          .b %00010000,%00011000
  226.          .b %10010000,%10011000
  227.          .b %00010100,%00011100
  228.          .b %10010100,%10011100
  229.          .b %00110000,%00111000
  230.          .b %10110000,%10111000
  231.          .b %00110100,%00111100
  232.          .b %10110100,%10111100
  233.  
  234.          .b %01010000,%01011000
  235.          .b %11010000,%11011000
  236.          .b %01010100,%01011100
  237.          .b %11010100,%11011100
  238.          .b %01110000,%01111000
  239.          .b %11110000,%11111000
  240.          .b %01110100,%01111100
  241.          .b %11110100,%11111100
  242.  
  243. -rerror   sec
  244.           rts
  245. {$60}{$60}{$60}{$60}{$60} liest einen block in den puffer  
  246.       readpuf1                         
  247. {$60}{$60}{$60}{$60}{$60} erg: c=0,z=0,x=0,a=0,y=8         
  248. +read     bit $dd00
  249.           bmi read  ; oder bmi rerror
  250.           bvc read  ; oder bvc rerror
  251.  
  252.           ldx#0        ;wert fuer atn=0
  253.           ldy#128
  254.           sty incr+1
  255.  
  256.           ldy#8        ;wert fuer atn=1
  257.           sty $dd00
  258.           stx incr+1
  259. -re1      stx $dd00
  260.           nop
  261.           lda $dd00    ;eor $dd00 aus.
  262.  
  263.           sty $dd00
  264.           inc incr+1
  265.           stx $dd00
  266.           lsr
  267.           lsr
  268.           eor $dd00
  269.  
  270.           sty $dd00
  271.           lsr
  272.           lsr
  273.           stx $dd00
  274.           nop
  275.           eor $dd00
  276.  
  277.           sty $dd00
  278.           lsr
  279.           lsr
  280.           stx $dd00
  281.           nop
  282.           ldx $dd00
  283.           eor rdtab,x  ;die 2 unteren
  284.                        ;bits von $dd00
  285.           sty $dd00    ;enthalten muell
  286. +incr     sta readpuf  ;aus $dd02, der
  287.           ldx#0        ;unbekannt ist,
  288.           lda incr+1   ;daher scheidet
  289.           bne re1      ;ein simples
  290.                        ;eor $dd00 aus
  291.           nop
  292.           nop
  293.           stx $dd00
  294.           clc
  295.           rts
  296.  
  297. {$60}{$60}{$60}{$60}{$60} installiert das system           
  298. +install  lda#>puffer
  299.           ldx#>flopstart
  300.           stx hi+1
  301.           sta tr1+2
  302.           ldy#0
  303. +system   sei
  304.           lda#8
  305.           jsr listen
  306.           lda#$6f
  307.           jsr seclst
  308.           lda#"m"
  309.           jsr iecout
  310.           lda#"-"
  311.           jsr iecout
  312.           lda#"w"
  313.           jsr iecout
  314.           tya
  315.           jsr iecout
  316. -hi       lda#0
  317.           jsr iecout
  318.           lda#16
  319.           tax
  320.           jsr iecout
  321. -tr1      lda puffer,y
  322.           jsr iecout
  323.           iny
  324.           dex
  325.           bne tr1
  326.           lda#8
  327.           jsr unlist
  328.           cpy#0
  329.           bne system
  330.           inc tr1+2
  331.           inc hi+1
  332.           lda hi+1
  333.           cmp#>(flopstart)+3
  334.           bcc system
  335.           lda#8
  336.           jsr listen
  337.           lda#$6f
  338.           jsr seclst
  339.  
  340.           lda#"u"       ;start bei
  341.           jsr iecout    ;$0500
  342.           lda#"3"
  343.           jsr iecout
  344.           jsr unlist
  345.           cli
  346.           ldy#0
  347.           nop
  348.           dey
  349.           bne *-2
  350.  
  351.           lda $dd00     ;init $dd02
  352.           and#3
  353.           eor#63
  354.           sta $dd02
  355.           lda#0
  356.           sta $dd00
  357.           rts
  358.  
  359. {$60}{$60}{$60}{$60}{$60} liest 2 zeichen der ersten 64    
  360.       files und die tr/sec-adresse     
  361.       erg: c=0 : ok                    
  362.            c=1 >= 64 files gelesen     
  363. +cachedir
  364.           ldx#18
  365.           ldy#0
  366.           tya
  367. -cda      sta dirpuf,y
  368.           iny
  369.           bne cda
  370.           ldy#63
  371.           sty indexmerk
  372.           ldy#1
  373. -cd0
  374.           jsr settrs
  375.           jsr read
  376.           ldy#0
  377.           ldx indexmerk
  378. -cd1
  379.           lda readpuf+2,y
  380.           bpl cd2
  381.           lda readpuf+3,y
  382.           sta dirpuf,x
  383.           lda readpuf+4,y
  384.           sta dirpuf+64,x
  385.           lda readpuf+5,y
  386.           sta dirpuf+128,x
  387.           lda readpuf+6,y
  388.           sta dirpuf+192,x
  389.           dex
  390.           bmi cd3
  391. -cd2      tya
  392.           clc
  393.           adc#$20
  394.           tay
  395.           bcc cd1
  396.  
  397.           stx indexmerk
  398.           ldy readpuf+1
  399.           ldx readpuf
  400.           bne cd0
  401.           clc
  402.           rts
  403. -cd3      sec
  404.           rts
  405. {$60}{$60}{$60}{$60}{$60} rechnet den 2-zeichen-filenamen  
  406.       in tr/sec um                     
  407.       erg: c=0 : ok                    
  408.            c=1 : nicht gefunden        
  409.            x/y : tr/sec                
  410. +finddir
  411.           sty indexmerk
  412.           ldy#63
  413. -fn1
  414.           lda indexmerk
  415.           cmp dirpuf+192,y
  416.           bne fn2
  417.           txa
  418.           cmp dirpuf+128,y
  419.           bne fn2
  420.           lda dirpuf,y
  421.           tax
  422.           lda dirpuf+64,y
  423.           tay
  424.           clc
  425.           rts
  426. -fn2      dey
  427.           bpl fn1
  428.           sec
  429.           rts
  430.  
  431.          .end
  432.          .fill (256-<*,0)
  433. +puffer   =*
  434.  
  435. {CBM-A}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-S}
  436. {$7d}floppy-teil                          {$7d}
  437. {$7d}unbenutzte speicherbereiche:         {$7d}
  438. {$7d}$0340-$04ff                          {$7d}
  439. {$7d}$20-$3f                              {$7d}
  440. {CBM-Z}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{CBM-X}
  441.          .setpc flopstart
  442.          .buffer (puffer,puffer+$2ff)
  443.          .begin
  444. {$60}{$60}{$60}{$60}{$60} tabellen {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  445. +t1       =$040
  446. +t2       =$080
  447. +t4       =$0c0
  448. +t3       =$200
  449. +t5       =$240
  450. +t6       =$280
  451. +t7       =$2c0
  452. +t8       =$300
  453. +tabloorg      =$f8c0
  454. +tabhiorg      =$f8a0
  455. {$60}{$60}{$60}{$60}{$60} variablen {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  456. +wunschtrack   =$00
  457. +wunschsektor  =$01
  458. +lastbyte      =$02
  459. +motorflag     =$03
  460. +fmem          =$04
  461. {$60}{$60}{$60}{$60}{$60} konstanten {$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}{$60}
  462. +sendvalue     =$02
  463. +receivevalue  =$0a
  464. +busyvalue     =$08
  465. +freevalue     =$00
  466.           sei          ;decodetabelle
  467.           ldx#23       ;kopieren, z.b.
  468. -asa1     lda tabhi,x  ;enthaelt zp23
  469.           sta 8,x      ;den decodewert
  470.           dex          ;fuer 5bit-
  471.           bpl asa1     ;nibble 23.
  472. -main2    lda#0
  473.           sta motorflag
  474. +main
  475.           ldx#255
  476.           txs
  477.           jsr input
  478.           beq ende     ;b=0:ende
  479.           cmp#42
  480.           bcc tracksec
  481.                        ;b<42:tr/sec
  482.           cmp#63       ;b=63:settrs
  483.           bcc maus     ;rest:motoraus
  484.           jsr input
  485.           sta wunschtrack
  486.           jsr readheader
  487.           jmp main
  488. -maus
  489.           lda#255-4
  490.           and $1c00
  491.           sta $1c00
  492.           bcc main2
  493. +ende     jmp ($fffc)
  494. -tracksec
  495.           sta wunschtrack
  496.           jsr input
  497.           sta wunschsektor
  498.  
  499. -trse1    jsr readheader
  500.           cmp wunschsektor
  501.           bne trse1
  502. -ws4
  503.           lda $1c00    ;sync abwarten,
  504.           bmi ws4      ;jetzt liegt der
  505.           lda $1c01    ;datenblock an
  506.           clv
  507.           ldx#63       ;datenblock:
  508. -l1                    ;64*5 bytes
  509.          *gby
  510.           sta t8,x     ;320 bytes
  511.           and#7        ;lesen und
  512.           sta t1,x     ;decodierung
  513.                        ;vorbereiten
  514.          *gby
  515.           asl
  516.           rol t1,x
  517.           asl
  518.           rol t1,x
  519.           lsr
  520.           lsr
  521.           lsr
  522.           sta t7,x
  523.  
  524.          *gby
  525.           sta t2,x
  526.           ror
  527.           lsr
  528.           lsr
  529.           lsr
  530.           sta t3,x
  531.  
  532.          *gby
  533.           asl
  534.           rol t2,x
  535.           lsr
  536.           sta t4,x
  537.  
  538.          *gby
  539.           sta t6,x
  540.           and#31
  541.           sta t5,x
  542.  
  543.           dex
  544.           bpl l1
  545.  
  546.           bvc *        ;in den 320
  547.           clv          ;bytes steckt
  548.           lda $1c01    ;das datenblock-
  549.           tay          ;kennzeichen,
  550.           lsr          ;hier das letzte
  551.           lsr          ;byte der daten
  552.           lsr
  553.           sta dc5+1
  554.           bvc *
  555.           clv
  556.           lda $1c01
  557.           sta lastbyte
  558.  
  559.           tya
  560.           asl lastbyte
  561.           rol
  562.           asl lastbyte
  563.           rol
  564.           and#31
  565.           tay
  566.           lda tablo-8,y
  567. -dc5      ora 123
  568.           sta lastbyte
  569. -decode                ;320 byte werden
  570.           inx          ;decodiert und
  571.                        ;auf den stapel
  572.           ldy t5,x     ;gelegt.
  573.           lda t6,x
  574.           lsr t4,x
  575.           ror
  576.           lsr t4,x
  577.           ror
  578.           lsr
  579.           lsr
  580.           lsr
  581.           sta dc0+1
  582.           lda tablo-8,y
  583. -dc0      ora 123
  584.           pha
  585.  
  586.           ldy t4,x
  587.           lda t2,x
  588.           and#31
  589.           sta dc1+1
  590.           lda tablo-8,y
  591. -dc1      ora 123
  592.           pha
  593.  
  594.           lda t7,x
  595.           sta dc2+1
  596.           ldy t3,x
  597.           lda tablo-8,y
  598. -dc2      ora 123
  599.           pha
  600.  
  601.           ldy t1,x
  602.           lda t8,x
  603.           lsr
  604.           lsr
  605.           lsr
  606.           sta dc3+1
  607.           lda tablo-8,y
  608. -dc3      ora 123
  609.           pha
  610.  
  611.           cpx#63
  612.           bcc decode
  613.           pla          ;datenblockkz
  614.           lda lastbyte ;durch letztes
  615.           pha          ;datenbyte ers.
  616. -transfer
  617.           ldx#1
  618.           txs
  619.           ldy#0        ;2*128 bytes
  620.           ldx#15       ;and-maske
  621.           lda#sendvalue
  622.           sta $1800
  623. -tr1
  624.           pla
  625.           asl
  626.          *tra
  627.           ror
  628.          *tra
  629.           lsr
  630.           lsr
  631.           lsr
  632.          *tra
  633.           lsr
  634.          *tra
  635.  
  636.           dey
  637.           bne tr1
  638.           bit $1800
  639.           bpl *-3
  640.           bit $1800
  641.           bmi *-3
  642.           jmp main
  643.  
  644.                                         
  645. +readheader
  646.           jsr motorein
  647.           lda $1c0c      ;init lesen
  648.           ora#$0e
  649.           sta $1c0c
  650. -waitheader
  651.           lda $1c00      ;sync abwarten
  652.           bmi waitheader
  653.           lda $1c01
  654.           clv
  655.          *gby
  656.           cmp#82         ;teil des
  657.           bne waitheader ;headerkennz.
  658.           ldx#4
  659. -ws2
  660.           sta fmem       ;3.byte=>fmem
  661.          *gby            ;4.byte=>akku
  662.           dex
  663.           bne ws2
  664.           tay
  665.           lsr fmem
  666.           ror
  667.           lsr fmem
  668.           ror
  669.           lsr
  670.           lsr
  671.           lsr
  672.           tax
  673.           tya
  674.           and#31
  675.           tay
  676.           lda tabloorg,y
  677.           ora tabhiorg,x ;decodieren
  678.  
  679.           cmp wunschtrack
  680.           beq seccmp
  681.           jsr kopf
  682.           jmp readheader+3
  683. -seccmp
  684.           lda fmem       ;track war
  685.           and#31         ;richtig,
  686.            tax            ;sektornummer
  687.           eor fmem       ;in den akku
  688.           lsr
  689.           ora tabloorg,x
  690.           rts
  691.                                         
  692. +input
  693.           lda#8               ;led ein
  694.           ora $1c00
  695.           sta $1c00
  696.           lda#receivevalue
  697.           sta $1800
  698.           ldy $1800:bpl *-3
  699.           lda#freevalue       ;init
  700.           sta $1800
  701.           ldy $1800:bmi *-3
  702.           lda $1800
  703.           and#5
  704.           asl
  705.           ldy $1800:bpl *-3
  706.           ldy $1800:bmi *-3
  707.           ora $1800
  708.           and#15
  709.           tax
  710.           ldy $1800:bpl *-3
  711.           ldy $1800:bmi *-3
  712.           lda $1800
  713.           and#5
  714.           ora inputtab,x
  715.           tax
  716.           lda#busyvalue
  717.           sta $1800
  718.           lda $1c00           ;led aus
  719.           and#255-8
  720.           sta $1c00
  721.           txa
  722.           rts
  723. +inputtab
  724.          .b %00000000,%00000010
  725.          .b %00001000,%00001010
  726.          .b %00010000,%00010010
  727.          .b %00011000,%00011010
  728.          .b %00100000,%00100010
  729.          .b %00101000,%00101010
  730.          .b %00110000,%00110010
  731.          .b %00111000,%00111010
  732. +kopf
  733.           ldx#202        ;dex
  734.           sec
  735.           sbc wunschtrack
  736.           bcs ok         ;differenz
  737.           ldx#232        ;von aktuellem
  738.           eor#255        ;und zieltrack
  739.           adc#1
  740. -ok       stx wert
  741.           asl            ;bewewgung in
  742.           tay            ;halftracks
  743.           ldx $1c00      ;steppermotor
  744. -wert     inx            ;in den unteren
  745.           txa            ;beiden bits
  746.           ora#12
  747.           sta $1c00
  748.           ldx#128+18     ;18 ist der
  749.           stx $1805      ;schlechteste
  750.           ldx $1805      ;mir bekannte
  751.           bmi *-3        ;wert fuer den
  752.           dey            ;steppermotor
  753.           bne wert-3
  754.  
  755.           and#%10011111  ;speed in bits
  756.           ldx#0          ;5 und 6
  757.          .b $ac          ;ldy abs
  758. -speed    adc#31
  759.           ldy $fed8,x    ;trackliste
  760.           dey
  761.           cpy wunschtrack
  762.           inx
  763.           bcs speed
  764.           sta $1c00
  765.           rts
  766. +motorein
  767.           lda motorflag
  768.           bne motorein-1
  769.           lda $1c00
  770.           ora#4
  771.           sta $1c00
  772.           sta motorflag
  773.           ldx#120        ;anlaufzeit
  774. -me1      dey            ;abwarten. ist
  775.           bne me1        ;mir zwar un-
  776.           dex            ;klar, warum,
  777.           bne me1        ;aber ohne
  778.           rts            ;geht's nicht
  779.  
  780. ;in diesen beiden tabellen sind die
  781. ;bits durcheinandergewuerfelt, nach
  782. ;der uebertragung passen die dann
  783. ;wieder.
  784.  
  785. +tablo
  786.  .b $ff,%00000010,%00000000,%00000100
  787.  .b $ff,%00001010,%00001000,%00001100
  788.  .b $ff,$ff      ,%00000001,%00000101
  789.  .b $ff,%00001111,%00001001,%00001101
  790.  .b $ff,%00000110,%00000011,%00000111
  791.  .b $ff,%00001110,%00001011,$ff
  792. +tabhi
  793.  .b $ff,%00100000,%00000000,%01000000
  794.  .b $ff,%10100000,%10000000,%11000000
  795.  .b $ff,$ff      ,%00010000,%01010000
  796.  .b $ff,%11110000,%10010000,%11010000
  797.  .b $ff,%01100000,%00110000,%01110000
  798.  .b $ff,%11100000,%10110000,$ff
  799.          .end
  800.